/*
 * ==================================================
 * 项目开发者：JerryStark
 * 开发者Email：4771007@qq.com
 * 开发者QQ:4771007
 * 开发范围：web，wap，android,ios,osx or win or linux 应用
 * ==================================================
 */
package RTGame.Configs;

import RTPower.RTFile;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;

/**
 * 配置文件加载类
 * <br>加载主配置文件
 * <br>加载球类以及彩票类的配置文件
 * <br>最后提供全局变量供其他实例使用
 * <br>变量被改变,同时配置文件也自动被改变
 *
 * @author jerry
 */
public class Load {

    /**
     * 主配置文件的json对象
     */
    public static JsonObject MainConfig = new JsonObject();

    /**
     * 所有的彩票游戏的配置信息对象
     */
    public static JsonObject LotteryConfig = new JsonObject();

    /**
     * 所有彩票的中奖规则配置
     */
    public static JsonObject LotteryRuleConfig = new JsonObject();

    /**
     * 重新初始化配置
     * <br>运行后将重新初始化所有的配置文件,
     * <br>全部从配置文件中读取一遍,加载到全局变量中
     *
     * @return false 未初始化,用户手工修改main配置文件,true 正常配置完毕,可以运行
     */
    public static boolean Format() {

        //初始化前,检查一次,文件的目录是否正常存在,不存在则进行创建
        ScanFilesPath.ScanAll();
        //检查配置文件是否初始化过,没有就返回false

        return !MainConfig.get("Status").getAsString().equals("wait_init");
    }

    /**
     * 把变量刷新进配置文件
     *
     * @param main_config 完整的主配置json对象
     */
    public static void SaveMain(JsonObject main_config) {
        Gson json = new GsonBuilder().setPrettyPrinting().create();
        String new_json = json.toJson(main_config);
        RTFile.Write("Config/MainConfig.json", new_json, false);
    }

    /**
     * 保存一个游戏的变量配置到配置文件
     *
     * @param game_name 游戏tag
     * @param lottery_config 游戏基本配置信息
     */
    public static void SaveOneLottery(String game_name, JsonObject lottery_config) {

        SaveOneJsonFile("Config/Lottery/" + game_name + "_config.json", lottery_config);

    }

    /**
     * 保存一个游戏的规则数据进配置文件
     *
     * @param game_name 游戏tag
     * @param lottery_rule_config 游戏规则配置json对象
     */
    public static void SaveOneLotteryRule(String game_name, JsonObject lottery_rule_config) {
        SaveOneJsonFile("Config/Lottery/" + game_name + "_rule.json", lottery_rule_config);
    }

    /**
     * 把一个json对象转成字符串保存进文件
     *
     * @param file_name
     * @param file_data
     */
    private static void SaveOneJsonFile(String file_name, JsonObject file_data) {
        if (file_data.entrySet().isEmpty()) {
            return;
        }
        Gson json = new GsonBuilder().setPrettyPrinting().create();
        String new_json = json.toJson(file_data);
        RTFile.Write(file_name, new_json, false);
    }

}
